package cz.vse.po1715.piskorky.umela_inteligence;

import static cz.vse.po1715.piskorky.umela_inteligence.UměláInteligence.PIŠKVORKA;

/*******************************************************************************
 * Instance třídy {@code Piškvorka} představují jednotlivé piškvorky (tedy sled
 *      určeného počtu znaků za sebou). Obsahuje odkaz na indexy políček,
 *      která jsou uložena v seznamu všech políček hracího pole.
 *
 * @author    Vladimír FOREJT
 * @version   0.00.000
 */
public class Piškvorka {
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
    
    /*************************************************************************** 
     * Majitel piškvorky:
     * 0 - žádný kámen
     * Kladné číslo - všechny položené kameny jsou počítače
     * Záporné číslo - všechny kameny jsou hráče
     * BLOK - na dané pětici kamenů již žádný hráč nemůže piškvorku vytvořit
     */
    private int majitel = 0;
    
    /** Indexy políček, která jsou v piškvorce obsažena */
    private int[] políčka = new int [PIŠKVORKA];
        
    
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================
    /***************************************************************************
     *
     */
    public Piškvorka() {
    }
//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
    
    /*******************************************************************************
    * Vrátí majitele piškvorky
    * 0 - zatím volná
    * Kladné číslo - všechny položené kameny jsou počítače
    * Záporné číslo - všechny kameny jsou hráče
    * BLOK - na dané pětici kamenů již žádný hráč nemůže piškvorku vytvořit
    */
    int getMajitel() {
        return majitel;
    }
    
    void setMajitel(int majitel) {
        this.majitel = majitel;
    }
    
    int[] getPolíčka() {
        return políčka;
    }
    
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
    
    /*******************************************************************************
    * Nastaví hodnotu indexu obsažených políček 
    * @param pořadí index v array políčka, do kterého budeme ukládat odkaz na
    *          index obsaženého pole
    * @param indexPole - index obsaženého pole
    */
    void addIndexPolíčka(int pořadí, int indexPole) {
        if(pořadí <= políčka.length) {
            políčka[pořadí] = indexPole;
        }
    }
    
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        Piškvorka inst = new Piškvorka();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
